<template>
  <div>
    <div class="bg-white grid-content">
      <div style="overflow: hidden; ">
        <div class="mytitle"><svg-icon icon-class="dydztj" class="myIcon" /> 党员调转统计表</div>
        <div class="myButtons">
          <el-button @click="handleClick('', 'add')" v-if="hasPermission('sys:sjtb:jygl:dydztj:add')">新增</el-button>
          <el-button
            class="import-button"
            icon="el-icon-upload2"
            @click="uploadFiles"
            v-if="hasPermission('sys:sjtb:jygl:dydztj:import')"
          >
            <i class="icon"></i>
            批量导入
          </el-button>
          <el-dialog title="批量导入" :visible.sync="importDialog" class="dialog-md" width="500px" :before-close="handleClose1">
            <el-form ref="fileForm" label-position="center" style="width: 100%" enctype="multipart/form-data">
              <el-form-item align="center" label="">
                <el-upload
                  ref="upload"
                  class="uploadDialog"
                  name="myfile"
                  action="string"
                  :http-request="httpRequest"
                  :on-change="handleChange"
                  :on-remove="handleRemove"
                  :before-remove="handleBeforeRemove"
                  :limit="1"
                  :file-list="fileList"
                  accept=".xlsx,.xls"
                  :auto-upload="true"
                >
                  <el-button slot="trigger" size="small" type="primary">上传文件</el-button>
                  <div class="el-upload__tip">1.仅支持上传.xls、.xlsx文件</div>
                  <div class="el-upload__tip">2.文件数据不能超过1000条</div>
                </el-upload>
              </el-form-item>
            </el-form>
            <span slot="footer" class="dialog-footer">
              <el-button size="small" @click="cancelUpload()">取消</el-button>
              <el-button type="primary" size="small" @click="upload()" :disabled="uploading">确定导入</el-button>
            </span>
          </el-dialog>
        </div>
      </div>
      <!-- 表格 -->
      <el-table :data="tableData" border style="width: 100%" :header-cell-style="{background:'#F5F7FA',color:'#909399'}">
        <el-table-column type="index" label="序号" :index="indexMethod"></el-table-column>
        <el-table-column align="center" prop="tbdw" label="填表单位"></el-table-column>
        <el-table-column align="center" prop="tbrq" label="填表日期"></el-table-column>
        <el-table-column align="center" prop="name" label="姓名"></el-table-column>
        <el-table-column align="center" prop="sex" label="性别"></el-table-column>
        <el-table-column align="center" prop="sfzhm" label="身份证号码"></el-table-column>
        <el-table-column align="center" prop="zrzb" label="转入支部"></el-table-column>
        <el-table-column align="center" prop="zczb" label="转出支部"></el-table-column>
        <el-table-column align="center" prop="zcSj" label="转出时间"></el-table-column>
        <el-table-column align="center" prop="zcLb" label="转出类别"></el-table-column>
        <el-table-column align="center" prop="bz" label="备注"></el-table-column>

        <el-table-column align="center" fixed="right" prop="approveStatus" label="审核状态">
          <template slot-scope="scope">
            <el-tooltip :content="scope.row.approveBz" placement="bottom" effect="light" :disabled="!scope.row.approveBz">
            <el-badge :is-dot="scope.row.approveBz||scope.row.approveBz===' '" class="item">
            <el-tag :class="scope.row.approveBz?'tagstyle':''"
            :type="
              scope.row.approveStatus == '2'
                ?'success'
                :scope.row.approveStatus == '1'
                  ? 'warning'
                  : scope.row.approveStatus == '0'
                    ? 'info'
                    : 'danger'"
              disable-transitions>{{
              scope.row.approveStatus == '2'
              ?'已通过'
              :scope.row.approveStatus == '1'
                ? '未审核'
                : scope.row.approveStatus == '0'
                  ? '未提交'
                  : '未通过'
            }}</el-tag>
            </el-badge>
          </el-tooltip>
          </template>
        </el-table-column>

        <el-table-column align="center" fixed="right" label="操作" width="100" v-if="hasPermission('sys:sjtb:jygl:dydztj:edit') || hasPermission('sys:sjtb:jygl:dydztj:check')">
          <template slot-scope="scope">
            <el-button @click="handleClick(scope.row, 'check')" type="text" v-if="hasPermission('sys:sjtb:jygl:dydztj:check')">查看</el-button>
            <el-button @click="handleClick(scope.row, 'edit')" type="text" v-if="hasPermission('sys:sjtb:jygl:dydztj:edit')">编辑</el-button>
          </template>
        </el-table-column>
      </el-table>
      <!-- 分页器 -->
      <el-pagination align='right'
          background
          @size-change="handleSizeChange" 
          @current-change="handleCurrentChange" 
          :current-page="pageNo"
          :page-sizes="[5,10, 20, 30, 40, 50]" 
          :page-size="pageSize" 
          layout="total, sizes, prev, pager, next, jumper"
          :total="total">
        </el-pagination>
    </div>

    <!-- 弹出框 -->
    <el-dialog :title="myDialogTitle" :visible.sync="dialogFormVisible" :before-close="handleClose" custom-class="saveAsDialog">

      <el-form :inline="true" :model="dydztjForm" class="demo-form-inline" :rules="rules" ref="dydztjForm" :disabled="isInput" label-position="left" label-width="190px" >
        <!-- <el-divider content-position="left">基础信息</el-divider> -->
        
        <el-divider content-position="left">基础信息</el-divider>

        <el-row>
          <el-col :span="12">
            <el-form-item label="填表单位:">
              <el-input
                v-model="dydztjForm.tbdw"
                placeholder="请输入填表单位"
              ></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="填表日期:">
              <el-date-picker
                v-model="dydztjForm.tbrq"
                type="datetime"
                placeholder="选择日期时间"
                align="right"
                :picker-options="pickerOptions"
              >
              </el-date-picker>
            </el-form-item>
          </el-col>
        </el-row>
        <el-divider content-position="left">调动信息</el-divider>
        <el-row>
          <el-col :span="12">
            <el-form-item label="姓名:">
              <el-input
                v-model="dydztjForm.name"
                placeholder="请输入姓名"
              ></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="性别">
              <el-radio-group v-model="dydztjForm.sex">
                <el-radio label="男"></el-radio>
                <el-radio label="女"></el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
        </el-row>

        <el-row>
          <el-col :span="12">
            <el-form-item label="身份证号码:">
              <el-input
                v-model="dydztjForm.sfzhm"
                placeholder="请输入身份证号码"
              ></el-input>
            </el-form-item>
          </el-col>
        </el-row>

        <el-row>
          <el-col :span="12">
            <el-form-item label="转入支部:">
              <el-input
                v-model="dydztjForm.zrzb"
                placeholder="请输入支部"
              ></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="转出支部:">
              <el-input
                v-model="dydztjForm.zczb"
                placeholder="请输入支部"
              ></el-input>
            </el-form-item>
          </el-col>
        </el-row>

        <el-row>
          <el-col :span="12">
            <el-form-item label="转出时间:">
              <el-date-picker
                v-model="dydztjForm.zcSj"
                type="datetime"
                placeholder="选择日期时间"
                align="right"
                :picker-options="pickerOptions"
              >
              </el-date-picker>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="转出类别">
              <el-select v-model="dydztjForm.zcLb" placeholder="请选择转出类别">
                <el-option label="一类" value="one"></el-option>
                <el-option label="二类" value="two"></el-option>
              </el-select>
            </el-form-item>
          </el-col>
        </el-row>

        <el-row>
          <el-col :span="12">
            <el-form-item label="备注:">
              <el-input type="textarea" v-model="dydztjForm.bz"></el-input>
            </el-form-item>
          </el-col>
        </el-row>

      </el-form>

      <div slot="footer" class="dialog-footer" v-show="!ischeck">
        <el-button @click="close('dydztjForm')">取 消</el-button>
        <el-button type="primary" @click="submitForm('dydztjForm')">确 定</el-button>
      </div>
      <div slot="footer" class="dialog-footer" v-show="ischeckSh">
        <el-button type="primary" @click="submitSh('dydztjForm')">提交审核</el-button>
      </div>
    </el-dialog>
  </div>
</template>

<script>
import axios from "axios";
import dydztjApi from '@/api/dydztj';
import { getToken } from "@/utils/auth";

export default {
  data() {
    return {
      pageNo: 1, //当前页码
      pageSize: 10, //每页显示数量
      total: 0, //总数量
      // table数据
      tableData: [{
        date: '2022-02-12',
        jh: '树10-40',
        jb: '抽',
        jyj: '第 二 采油作业区 东162队 2 号集油间',
        scsj: '0:00',
        yy: '0.61',
        tydata: '0.24',
        cyjsdl: '22',
        cyjxdl: '21',
        csyl: '1.17',
        hyyl: '0.25',
        cswd: '67.00',
        hywd: '42.00',
        remarks: '',//备注
      }],
      //当前页码
      currentPage: 1,
      //表单填报的数据
      dydztjForm: {
        id:'',
        approveStatus:'',//审核状态
        tbdw: "", //填表单位
        tbrq: "", //填表日期
        name: "", //姓名
        sex: "", //性别
        sfzhm: "", //身份证号码
        zrzb: "", //转入支部
        zczb: "", //转出支部
        zcSj: "", //转出时间
        zcLb: "", //转出类别
        bz: "", //备注
      },
      //验证规则
      rules: {
        name: [
          { required: true, message: '请输入姓名', trigger: 'blur' },
        ],
        tbdw: [
          { required: true, message: '请输入填表单位', trigger: 'blur' }
        ],
        tbrq: [
          { required: true, message: '请选择日期', trigger: 'change' }
        ],
      },
      //时间快捷选择
      pickerOptions: {
        // disabledDate(time) {
        //   return time.getTime() > Date.now();
        // },
        shortcuts: [{
          text: '今天',
          onClick(picker) {
            picker.$emit('pick', new Date());
          }
        }, {
          text: '昨天',
          onClick(picker) {
            const date = new Date();
            date.setTime(date.getTime() - 3600 * 1000 * 24);
            picker.$emit('pick', date);
          }
        }, {
          text: '一周前',
          onClick(picker) {
            const date = new Date();
            date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
            picker.$emit('pick', date);
          }
        }]
      },
      //获取当前日期
      currentTime:'',
      //编辑框是否显示
      dialogFormVisible: false,
      //弹出框是否是查看
      ischeck: false,
      //弹出框是否有提交审核按钮
      ischeckSh: false,
      //控制查看时不可更改数据
      isInput:false,
      //弹出框标题
      myDialogTitle: '',

      file: null,
      //加载动画
      uploadLoading: false,
      //上传的文件列表
      fileList: [],
      //控制弹出框显示与否
      uploadShowDialog: false,
      //上传地址
      uploadURL: '',
      //loading加载中
      downloadLoading: '',
      importDialog:false,
      fileList:[],
      urlFile:'',
      uploading:true,
    }
  },
  created(){
    this.search();

  },
  mounted(){
    this.filterTime();
    // this.initDate();
  },
  methods: {
    /**
    * 查询列表
    */
    async search() {
      // this.pageNo = pageNo; //当前页码
      // this.pageSize = pageSize; //每页显示数量
      //发送查询请求
      let res = await dydztjApi.getDydztjList(this.pageNo,this.pageSize);
      //判断是否成功
      if(res.success){
        console.log(res.data);
        //赋值
        this.tableData = res.data.records;
        //总数量
        this.total = res.data.total;
      }
    },
    onSubmit() {
      console.log('submit!');
    },
    //关闭对话框
    handleClose(done) {      
      // 清空表单
      // this.$refs['dydztjForm'].resetFields();
      // 清空表单校验，避免再次进来会出现上次校验的记录
      this.$refs['dydztjForm'].clearValidate()
      done()
      
    },
    handleClose1(done) {  
      this.urlFile = ''  
      this.fileList =[];  
      done()     
    },
      // 弹框关闭触发
    close(formName) {
      this.dialogFormVisible = false;
      // 清空表单
      // this.$refs[formName].resetFields();
      // 清空表单校验，避免再次进来会出现上次校验的记录
      this.$refs[formName].clearValidate()
    },

    submitForm(formName) {
      //表单验证
      this.$refs[formName].validate(async (valid) => {
          if (valid) {
              let res = null;
              console.log(this.dydztjForm.id+"111")
              //判断菜单ID是否为空
              if (this.dydztjForm.id === '') {
                this.dydztjForm.tbrq = this.currentTime;
                  //发送添加请求
                  res = await dydztjApi.addDydztj(this.dydztjForm);
              } else {
                  //发送修改请求
                  this.dydztjForm.approveStatus = 0;
                  // console.log(334345)
                  res = await dydztjApi.updateDydztj(this.dydztjForm);
              }
              console.log(res)
              //判断是否成功
              if (res.success) {
                  this.$message.success(res.message);
                  //刷新
                  this.search();
                  //关闭窗口
                  this.dialogFormVisible = false;
              } else {
                console.log(res)
                  this.$message.error(res.message);
              }
          }
      })
    },
    //提交审核
    async submitSh(formName) {

              let res = null;
              //发送修改请求
              this.dydztjForm.approveStatus = 1;
              this.dydztjForm.approveBz = '';
              // console.log(334345)
              res = await dydztjApi.updateDydztj(this.dydztjForm);
            
              console.log(res)
              //判断是否成功
              if (res.success) {
                  this.$message.success(res.message);
                  //刷新
                  this.search();
                  //关闭窗口
                  this.dialogFormVisible = false;
              } else {
                console.log(res)
                  this.$message.error(res.message);
              }

    },
    handleClick(row, handle) {
      // console.log(row.approveStatus);
      this.dialogFormVisible = true;
      if (handle == 'check') {
        this.myDialogTitle = '党员调转统计表'
        if(row.approveStatus==0){
          this.ischeckSh = true
        }else{
          this.ischeckSh = false
        } 
        this.ischeck = true    
        this.isInput = true;// 1.表单禁用
        // this.dydztjForm = row
        this.$objCopy(row, this.dydztjForm);//把当前要编辑的数据复制到数据域，给表单回显
        this.$message({ message: '成功打开', type: 'success' });
      } else if (handle == 'edit') {
          if(row.approveStatus!=2){
            this.myDialogTitle = '党员调转统计表编辑'
            this.ischeck = false
            this.ischeckSh = false  
            this.isInput = false     
            this.$objCopy(row, this.dydztjForm);//把当前要编辑的数据复制到数据域，给表单回显
          }else {
            this.dialogFormVisible = false;
            this.$message({ message: '已通过不可修改！', type: 'error' });
          }
      } else if (handle == 'add') {
        // this.dydztjForm ={}
        this.$resetForm("dydztjForm", this.dydztjForm); //清空表单数据
        this.myDialogTitle = '党员调转统计表填报'
        this.ischeck = false
        this.ischeckSh = false
        this.isInput = false
      }
      // console.log(row);
    },
    uploadFiles() {
      this.importDialog = true
      this.urlFile = ''
    },
    cancelUpload(){
      this.urlFile = ''
      this.fileList = [];
      this.importDialog = false
    },
    //  监听改变
    handleChange(file, fileList) {
      this.fileList = fileList
    },
    // 移除
    handleRemove(file, fileList) {
      this.fileList = fileList
    },
    beforeAvatarUpload(file) {
      //1MB=1024*1024(1MB=1024KB 1KB=1024MB)
      const is10M = file.size / 1024 / 1024 < 10;
       //限制文件上传大小
      if (!is10M) {
        this.$message.error("上传图片大小不能超过 10MB!");
        return false
      }
      return true
    },
    //上传成功之后清除历史记录
    // handleSuccess(fileList) {
    //   this.fileList = [];
    //   this.$refs['fileForm'].upload.clearFiles() 
    // },
    // 自定义上传Excel方法
    httpRequest(param) {
      // console.log(param.file);
      this.uploading = true;
      const File = this.fileList[0].raw;
      // const File = param.file
      console.log(File);
      // console.log(this.fileList);
      let formData = new FormData();
      formData.append("myfile", File);
      console.log(formData.get("myfile"));

      axios({
      url: "http://47.108.251.250:3296/api/fileAbout/fileUpload",
      method: "post",
      headers: {
        "token": getToken(),
        "Content-Type": "multipart/form-data",
      },
      data: formData,
        }).then(
          (response) => {
            if (response.data.success === true && response.data.data!=="") {
              console.log(response.data);
              this.urlFile = response.data.data;
              console.log(this.urlFile);
              this.$message.success(response.data.message);
              param.onSuccess();
              this.uploading = false;
            }else{
              this.$message.error('上传失败');
            }    
          },
          (error) => {
            console.log(error);
            this.$message.error(response.data.message);
          }
        );
    },      
    //文件导入
    upload(){
      let formData = new FormData();
      formData.append("filePath",this.urlFile);
      console.log(formData.get("filePath"));
      axios({
      url: "http://47.108.251.250:3296/api/dydztj/batchInput",
      method: "post",
      headers: {
        "token": getToken(),
        "Content-Type": "multipart/form-data",
      },
      data: formData,
        }).then(
          (response) => {
            if (response.data.success === true) {
              console.log(response.data);
              this.$message.success(response.data.message);
              //刷新
              this.search();
              //关闭窗口
              this.importDialog = false;
              this.fileList = []; 
            }else{
              this.$message.error('导入失败');
            }    
          },
          (error) => {
            console.log(error);
            this.$message.error(response.data.message);
          }
        );
    },
    /*** 当每页数量发生变化时触发该事件 */
    handleSizeChange(size) {
      console.log(size);
      this.pageSize = size;
      //将每页显示的数量交给成员变量
      this.search(this.pageNo, size);
    },
    /*** 当页码发生变化时触发该事件 */
    handleCurrentChange(page) {
      console.log(page);
      this.pageNo = page;
      //调用查询方法
      this.search(page, this.pageSize);
    },
    // 序号计算
    indexMethod (index) {
    // index默认在0开始，这里+1
      return index + 1 + (this.pageNo - 1) * this.pageSize
    },
    // 获取当前日期
    filterTime() {
      var date = new Date();
      var y = date.getFullYear();
      var m = date.getMonth() + 1;
      m = m < 10 ? '0' + m : m;
      var d = date.getDate();
      d = d < 10 ? '0' + d : d;
      this.currentTime = y + '-' + m + '-' + d;
    },
  }
}
</script>

<style lang="scss" scoped>
// 标题
.mytitle {
  font-size: large;
  padding-left: 10px;
  margin-bottom: 16px;
  float: left;
}

//按钮组
.myButtons {
  float: right
}

//格子的样式
.bg-white {
  background: #ffffff;
}

.grid-content {
  padding: 10px;
  margin-bottom: 10px;
  border-radius: 4px;
}

.calendar ::v-deep .el-button-group::before {
  display: none;
}

.calendar ::v-deep .el-button-group::after {
  display: none;
}

// 分割线样式
.el-divider--horizontal {
  display: block;
  height: 2px;
  width: 100%;
  margin: 24px 0;
}

// 表单各项的样式
.el-form-item {
  margin: 15px 10px 15px 10px;
}

//表单禁用字体样式
.el-input.is-disabled ::v-deep .el-input__inner {
    color: #606266;
  }
//对话框宽度
// .customWidth{
//         width:80%;
//     }
::v-deep .saveAsDialog {
  width: 60% !important;
}

::v-deep .el-table .cell{overflow: unset}

.el-date-editor.el-input, .el-date-editor.el-input__inner { width: 180px; }

.el-input {
  width: 180px;
}
.tagstyle{
  cursor: pointer;
}
</style>